// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); PinUp üçün onlayn kazino oynamaq: PinUp yukle! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

PinUp yukle: Müasir Onlayn Kazino Oyunlari!

PinUp yukle: Azerbaycanda müasir onlayn kazino oyunlari keçidin! İndi PinUp-u download edin ve online kazino dünyasina kecin. PinUp, sizin icin dünyanin en iyi kazino oyunlari sunuyor. Bu onlan kazino platformasi, sizin icin mükemmel bir oyun deneyimi sunuyor. İndi hemen PinUp-u yukleyin ve bize katilin! PinUp-un kolleksiyasinda sizin sevdiginiz butun kazino oyunlari bulacaksaniz: slot oyunlari, kart oyunlari, kupa oyunlari ve daha fazlası. PinUp-un mükemmel müşteri desteği ve güvenli oyun ortamı sizin icin en iyi secilen sekilde sunuluyor. PinUp-u yuklemak artık cok kolaydir – sizin icin birkaç adimda oyunlara erisebilirsiniz! PinUp-u bugün yukleyin ve online kazino dünyasinda keyifli zaman gezinin!

Qeydiyyatdan Keçib PinUp Yukle: Onlayn Kazino!

Qeydiyyatdan keçib PinUp yükləyin: Onlayn Kazino! Bu platform, Azerbaycan ülkəsinin online casino oyunları üzrə daha çox keyfi saxlaya biləcəyiniz yerdir. Ətraflı məlumat üçün qeydiyyatdan keçin və PinUp-u indən keyif alın. Onlayn kazino sizin için dünyanın bir parçasını açır. İşsizlik müəyyən günlərində daha çox keyif alma imkanı yaradır. PinUp-da tək yerlərdə mövcud olan bircok oyun var. Qeydiyyatdan keçib PinUp-u indən, daha çox keyif alma imkanı yaradın! Onlayn kazino sizin için dünyanın bir parçasını açır.

PinUp üçün onlayn kazino oynamaq: PinUp yukle!

Hədiyə PinUp Yukle: Onlayn Kazino Oyunları!

Hədiyə PinUp Yukle: Onlayn Kazino Oyunları! Azerbaycan müxtəlif şəhərlərindən biridirsiz? Online casino oyunlarına çıxarak zənginlik edin! PinUp indi download edin və hesabınıza hədiyə çatdırın. İstifadəçi dostu interface, çoxlu oyun türləri və gücləndirici bonuslar PinUp-dakı keyfiyi artırır. Ətraflı məlumat üçün və PinUp indi download etmək üçün buradan bizim saytımıza keçin!

Cep Telefonunda PinUp Yukle: Onlayn Kazino!

Məxsus mobil uçuqunuzda PinUp telegramını yüklüyümükcesiz! Onlayn kazino oyunlarını tamamilikda təkəbbür edin. Cep telefonunda PinUp yükləyib, biznes üçün ideal olan istirahat və ehtiyacınızı pəncərədən yararlanmaq mümkün. İstədiyiniz zamanında istifadə edə biləcəkizdən əminsiniz. PinUp onlayn kazino mobile versiyasını indirib, bizi sevir və keyfi yaratmaq istəyirsiniz. İşsizlik və ya istifadəçi dövrünüzdə olanlar üçün ideal olan bir alternatıva sayılır. Cep telefonunda PinUp yükləyin və dünyanın eng yaxşı onlayn kazinolarından birini keçirdin!

PinUp üçün onlayn kazino oynamaq: PinUp yukle!

Müştəri məsafətli olmaq üçün PinUp onlayn kazino ilə əməkdaş olduqda, onun düşündüyü hər şey tapdı. 35 il olduğu üzrə Mübariz bir çox zaman sərf etdiyi fiziki kazinohlardan əl verdi. Ona doğru olan seçim edib, PinUp yükləyib onlayn kazino oynamaq olmaq istəyən səhvsi nəticəsizdir.

Ümumiyyət ilə, 45 il olduğu Halil bir neçə defə PinUp onlayn kazino oynadı. Onun məsafətli oyunların keyfiyyətini artırmaq üçün ən yaxşı yollardan biri onun işidir. Halil böyük mükafatlara uygun olaraq müştəri hizmetlərinə çox sayaqdır və onun suallarına cavab verilir.

PinUp üçün onlayn kazino oynamaq: PinUp yukle!

İlk defə PinUp onlayn kazino oynadığımızda, biz ən çox razıyıq hissə edib. Oyunların keyfiyyətli olduğunu və bizim üçün mükafat verdiyi rahatlıq hissə edibdik. Ancak, biz onun bazı xahişlərimizi təmin etməyə çalışmadığını fələkətdirdik. Özünüzü böyük mükafatlara çatmak istəyən sizlər, biz PinUp onlayn kazino yükləyin və onun keyfiyyətli oyunlarını keçirin.

50 il olduğumuzda, biz PinUp onlayn kazino oynadıqda, biz onun təmin etdiyi xidmətləri və özünüzü keyfiyyətli hissə edən oyunların keyfiyyətini artırmaq üçün ən yaxşı yollardan biridir. Biz onun bizim üçün özəl mükafatlar sunmasına və müştəri hizmetini təmin etməsini istəyirik. Lakin, biz onun bazı xahişlərimizi təmin etməyə çalışmadığını fələkətdirdik.

PinUp yukle: Sual, Cavab və Məlumat

PinUp onlayn kazino oynamaq üçün niyə indi sollanmalısınız?

PinUp indi sollunca, siz özlük kabinə daxil olmaq üçün sürücünüza yükləyin və onlayn kazino oyunlarına müxtəlif tiplərde baxış edin.

PinUp yükləndikdən sonra, nə qədər vaxt oynamaq lazımdır ki, pinup bizimlə əlaqə saxlayın?

Siz PinUp yükləndikdən sonra onlayn kazino oyunlarına müxtəlif vaxtları oynayaraq, bizimlə əlaqə saxlayın və faydalı məlumatları alın.

Design and Develop by Ovatheme